package com.asialjim.wechat.official.apiservice;

import com.asialjim.wechat.apiservice.ApiService;
import com.asialjim.wechat.official.api.templatemessage.*;
import com.asialjim.wechat.official.templatemessage.TemplateMessage;
import java.util.List;

/**
 * <h1><em>ASIAL JIM JAVA DOC</em></h1><hr/>
 * <h2>INTERFACE DESCRIPTION <i>[ NAME: TemplateMessageService ]</i></h2><strong>
 * <p> we-chat official account template message service
 * </strong><p><p><em>Copyright &copy; Asial Jim Co., LTD</em><hr/>
 *
 * @author Asial Jim &nbsp;&nbsp; <span>Email:<a href="mailto:asialjim@hotmail.com">asialjim@hotmail.com</a> &nbsp;&nbsp; <a href="asialjim@qq.com">asialjim@qq.com</a></span>
 * @version 1.0.0
 * @since 2021/3/15   &nbsp;&nbsp; JDK 8
 */
public interface TemplateMessageService extends ApiService {

    /**
     * <h3>METHOD DESCRIPTION <i>[ NAME: apiSetIndustry ]</i></h3>
     * we-chat template message api set industry
     * @param industryInfo {@link SetIndustryApiRequest.BodyParam industry info}
     * @author Asial Jim &nbsp;&nbsp;<span>Email:asialjim@hotmail.com &nbsp;&nbsp; asialjim@qq.com</span>
     * @since 2021/3/15 17:14
     */
    void apiSetIndustry( SetIndustryApiRequest.BodyParam industryInfo);

    /**
     * <h3>METHOD DESCRIPTION <i>[ NAME: industryInfo ]</i></h3>
     * get template industry
     * @return {@link GetIndustryApiResponse industry info}
     * @author Asial Jim &nbsp;&nbsp;<span>Email:asialjim@hotmail.com &nbsp;&nbsp; asialjim@qq.com</span>
     * @since 2021/3/15 17:15
     */
    GetIndustryApiResponse industryInfo();


    /**
     * <h3>METHOD DESCRIPTION <i>[ NAME: addTemplate ]</i></h3>
     * add template
     * @param templateShortId {@link String template short id}
     * @return {@link String template id for api add template}
     * @author Asial Jim &nbsp;&nbsp;<span>Email:asialjim@hotmail.com &nbsp;&nbsp; asialjim@qq.com</span>
     * @since 2021/3/15 17:17
     */
    String addTemplate(String templateShortId);

    /**
     * <h3>METHOD DESCRIPTION <i>[ NAME: allPrivateTemplate ]</i></h3>
     * get all private template
     * @return {@link List template list}
     * @author Asial Jim &nbsp;&nbsp;<span>Email:asialjim@hotmail.com &nbsp;&nbsp; asialjim@qq.com</span>
     * @since 2021/3/15 17:19
     */
    List<GetAllPrivateTemplateApiResponse.TemplateInfo> allPrivateTemplate();


    /**
     * <h3>METHOD DESCRIPTION <i>[ NAME: deletePrivateTemplate ]</i></h3>
     * delete private template by template id
     * @param templateId {@link String template id}
     * @author Asial Jim &nbsp;&nbsp;<span>Email:asialjim@hotmail.com &nbsp;&nbsp; asialjim@qq.com</span>
     * @since 2021/3/15 17:21
     */
    void deletePrivateTemplate(String templateId);


    /**
     * <h3>METHOD DESCRIPTION <i>[ NAME: onceSubscribeTemplateUrl ]</i></h3>
     * once subscribe template url
     * @param scene {@link String desc}
     * @param templateId {@link String desc}
     * @param redirectUrl {@link String desc}
     * @param reserved {@link String desc}
     * @return {@link String once subscribe template url}
     * @author Asial Jim &nbsp;&nbsp;<span>Email:asialjim@hotmail.com &nbsp;&nbsp; asialjim@qq.com</span>
     * @since 2021/3/15 17:48
     */
    String onceSubscribeTemplateUrl(String scene,String templateId,String redirectUrl,String reserved);


    /**
     * <h3>METHOD DESCRIPTION <i>[ NAME: sendSubscribeTemplateMessage ]</i></h3>
     * send subscribe template message
     * @param templateMessage {@link TemplateMessage template message}
     * @author Asial Jim &nbsp;&nbsp;<span>Email:asialjim@hotmail.com &nbsp;&nbsp; asialjim@qq.com</span>
     * @since 2021/3/15 17:50
     */
    void sendSubscribeTemplateMessage(TemplateMessage templateMessage);
}
